<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %><%--
  Created by IntelliJ IDEA.
  User: Jovi
  Date: 2018/9/11
  Time: 上午11:01
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false" language="java" pageEncoding="UTF-8" %>
<%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%--
可以更快的开发出表单页面，而且更方便的进行表单值的回显，所以采用form标签.
可以通过modelAttribute属性指定绑定的模型属性，
若没有指定该属性，则默认从request域对象中读取commond的表单bean
如果该属性值也不存在，则报错
--%>
<form:form action="/rest/emp" method="post" modelAttribute="employee">

    <form:errors path="*"/>
    <hr>

    <br>

    <%--path属性对应html表单标签的name属性值--%>
    <c:if test="${employee.id==null}">
        LastName:<form:input path="lastName"/><form:errors path="lastName"/>
        <br>
    </c:if>
    <c:if test="${employee.id!=null}">
        <form:hidden path="id"/>
        <%--对于_method不能使用form:hidden标签，因为modelAttribute对应的bean中没有_method这个属性--%>
        <input type="hidden" name="_method" value="put">
    </c:if>
    Email:<form:input path="email"/><form:errors path="email"/><br>
    <%
        Map<String, String> genders = new HashMap();
        genders.put("1", "Male");
        genders.put("0", "Female");

        request.setAttribute("genders", genders);
    %>
    gender:
    <br><form:radiobuttons path="gender" items="${genders}" delimiter="<br>"/><br>
    Department:
    <form:select path="department.id" items="${departments}" itemLabel="departmentName"
                            itemValue="id"/><br>
    <%--
        1.数据类型转换
        2.数据类型格式化
        3.数据校验
            1).如何校验？注解
                ①.使用JSR 303验证标准
                ②.加入hibernate validator 验证框架JAR包
                ③.在SpringMVC 配置文件中添加<mvc:annotation-driven/>
                ④.需要在bean的属性上添加对应的注解
                ⑤.目标方法bean类型的前面添加@Valid注解
            2).验证出错转向到哪一个页面
            3).错误消息如何显示
            4).如何把错误消息进行国际化
    --%>
    Birth:<form:input path="birth"/><form:errors path="birth"/>
    <br>
    Salary:<form:input path="salary"/>
    <br>
    <input type="submit" value="Submit"/>

</form:form>

<%--自定义类型转换器--%>
<form action="/rest/testConverter" method="post">
    <%--lastname-email-gender-department.id--%>
    Employee:<input type="input" name="employee"/>
    <input type="submit" value="Submit"/>
</form>

</body>
</html>